express 介绍
Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
简单说下参数安全
今天说下,参数过滤,我们结果对外暴露的所有接口参数,我们需要在request接收的时候,进行参数校验,说白一点,不管是入参还是出参,我们都得做好统一处理。
今天我来在express里面来给大家讲下如何实现参数校验。
1.首先我们定义一个路由1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18index.js
module.exports = app => {
app.use('/validateData', validate);
app.use('/', page);
};
route.js
var express = require('express');
var router = express.Router();
var validate = require('../controller/common/validate');
var apiWrapperReq = require('../middleware/apiWrapperReq');
router.get('/', apiWrapperReq.wrapperReq, validate.fetch);
module.exports = router;
2.我们需要给路由一个中间件。来控制参数,这里地方的apiwrapperReq里面需要做好处理。
1 | // 校验类型 |
3.上面的接受了2个参数,一个是rules,一个params。我们需要获取一个rules。对应每一个接口都得有一个rules。下面我们整理下规则的参数
我们需要对参数是否必须填写和参数的类型进行转换。这样保证我们的参数合法性。
1
2
3
4
5
6
7
8
9
10 module.exports = {
queryA: {
required: true,
type: 'string'
},
queryB: {
required: true,
type: 'int'
}
};按照上述步骤去走我们的流程,判断下有校验规则的才走逻辑。不然跳过。我们知道做这个目的是,过滤一些正则表达式的攻击,防止参数中含有正则表达式的一些进行攻击数据库。简单的做一层。如果你觉得你的正则表达式不是很优雅,可以采用第三方库(safe-regex).来帮你你完成。